/*
 * 百度在线网络技术（北京）有限公司拥有本软件版权2022并保留所有权利。
 * Copyright 2022, Baidu.com,Inc 2:Baidu Online Network Technology (Beijing) Co.,Ltd,
 * All rights reserved.
 */

package com.azdebugit.suanfa.test.java_map_list_suanfa;
 
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
 
/**
 * 
 * @author QuinnNorris
 * 不可修改的安全视图举例
 */
public class UnmodifaiableViews {
 
    //这个是调用列表的方法
    private static void changeList(List<String> al) {
        al.set(0, "change");
        //error Exception in thread "main" java.lang.UnsupportedOperationException
    }
 
    public static void main(String[] args) {
        // TODO Auto-generated method stub
 
        List<String> al = new ArrayList<>();
        //创建ArrayList对象al
        al.addAll(Collections.nCopies(10, "final"));
        //前十个元素填充“final”字符串
        changeList(al);
        for(String s : al){
            System.out.println(s);
        }
        //先直接调用changeList方法，没问题
        changeList(Collections.unmodifiableList(al));
        //报错，说明在changeList中对al进行了修改，被阻止了，而且抛出了异常
        for(String s : al){
            System.out.println(s);
        }
    }
 
}
